package com.mallcloud.mall.app.service;

import com.mallcloud.mall.app.api.entity.dto.AppXglQRCodePaymentInfoDTO;
import com.mallcloud.mall.app.api.entity.dto.AppXglQRCodePaymentLoginDTO;
import com.mallcloud.mall.app.api.entity.vo.ProXglSendSaleGoods;
import com.mallcloud.mall.app.api.entity.vo.ProXglSendSaleHead;
import com.mallcloud.mall.app.api.entity.vo.ProXglSendSalePay;
import com.mallcloud.mall.app.api.entity.vo.XglQRCodePaymentInfoVO;
import com.mallcloud.mall.mall.api.entity.MallOrderModel;
import com.mallcloud.mall.mall.api.entity.dto.ProXglQRCodePaymentAccumulatePoints;
import com.mallcloud.mall.mall.api.entity.dto.ProXglQRCodePaymentCouponWriteOff;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * 星光里扫码支付
 */
public interface AppXglQRCodePaymentService {

	XglQRCodePaymentInfoVO getPayInfo(AppXglQRCodePaymentInfoDTO dto);

	Boolean merchantLogin(AppXglQRCodePaymentLoginDTO dto);

	Map<String, Object> notify(HttpServletRequest request);

	/**
	 * 处理回调请求
	 * @param order
	 */
	void handleOrder(MallOrderModel order);

	/**
	 * 上传销售数据
	 */
	String xglSendSaleHead(ProXglSendSaleHead sendSaleHead);

	/**
	 * 上传交易商品明细
	 */
	void xglSendSaleGoods(ProXglSendSaleGoods dto);

	/**
	 * 上传支付明细
	 */
	void xglSendSalePay(ProXglSendSalePay dto);

	/**
	 * 电子|手工券核销
	 */
	void writeOff(ProXglQRCodePaymentCouponWriteOff dto);

	/**
	 * 累计积分
	 * @param dto
	 * @return
	 */
	void accumulatePoints(ProXglQRCodePaymentAccumulatePoints dto);
}
